﻿//2762. 不间断子数组
//给你一个下标从 0 开始的整数数组 nums 。nums 的一个子数组如果满足以下条件，那么它是 不间断 的：
//i，i + 1 ，...，j  表示子数组中的下标。对于所有满足 i <= i1, i2 <= j 的下标对，都有 0 <= |nums[i1] - nums[i2]| <= 2 。
//请你返回 不间断 子数组的总数目。
//子数组是一个数组中一段连续 非空 的元素序列。



class Solution {
public:
    long long continuousSubarrays(vector<int>& nums)
    {
        long long ans = 0;
        map<int, int> cnt;
        int left = 0, right = -1;
        int n = nums.size();
        for (right = 0; right < n; right++)
        {
            cnt[nums[right]]++;
            while ((cnt.rbegin()->first - cnt.begin()->first) > 2)
            {
                int y = nums[left++];
                if (--cnt[y] == 0)
                {
                    cnt.erase(y);
                }
            }
            ans += right - left + 1;
        }
        return ans;
    }
};